package com.party.core.dao.read.mall;

import com.party.common.paging.Page;
import com.party.core.dao.read.BaseReadDao;
import com.party.core.model.mall.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 商城商品数据读取
 * Created by wei.li
 *
 * @date 2017/8/15 0015
 * @time 16:05
 */

@Repository
public interface MallGoodsReadDao extends BaseReadDao<MallGoods> {

    /**
     * 商品列表
     *
     * @param 
     * @param page                分页参数
     * @return 列表
     */
    List<MallGoodsWithAuthor> withAuthorListPage(@Param("goods") MallGoods goods, @Param("params") Map<String, Object> params, Page page);


    /**
     * 商品列表（带类型）
     *
     * @param mallGoods 商品
     * @param page      分页参数
     * @return 列表
     */
    List<MallCategoryWithGoods> withCategoryListPage(MallGoods mallGoods, Page page);

    /**
     *
     * @param input
     * @param page
     * @return
     */
    List<MallGoods> search(MallCategorySiftGoodsInput input, Page page);

    /**
     * 获取商品信息(详情)
     * @param id: 商品id
     * @return
     */
    MallGoodsInfo info(@Param("id") String id);

    /**
     * 检查品牌和分类有没有对应的商品
     *
     * @param brandId    品牌id
     * @param categoryId 分类id
     * @return
     */
    Integer checkCategoryBrand(@Param(value = "brandId") String brandId, @Param(value = "categoryId") String categoryId);

    /**
     * 检查规格和分配有没有对应的商品
     *
     * @param specId     规格id
     * @param categoryId 分类id
     * @return
     */
    Integer checkCategorySpec(@Param(value = "specId") String specId, @Param(value = "categoryId") String categoryId);

    /**
     * 根据分类获取商品
     *
     * @param categoryId 分类编号
     * @return
     */
    List<MallGoods> findByCategoryId(@Param(value = "categoryId") String categoryId);

    List<MallGoods> getGoodsList(@Param(value = "goodsId") Set<String> goodsIds, Page page);
}
